﻿using System;
using System.Linq;
using System.Windows.Forms;
using DataAccess;
using DevExpress.XtraEditors;
using NLog;
using QuanLyKhachSan.TemplateReport;

namespace QuanLyKhachSan
{
    public partial class TabChiTietHoaDonDV : XtraUserControl,IGeneatetabName
    {
        private readonly ChiTietHoaDonDVManager _ctManager = new ChiTietHoaDonDVManager();
        protected static Logger logs = LogManager.GetCurrentClassLogger();

        public TabChiTietHoaDonDV()
        {
            InitializeComponent();
        }

        public string Getname()
        {
            return "Chi tiết hóa đơn DV";
        }

        private void Them_Click()
        {
            logs.Info(Commons.ToString()+", Chọn chức năng thêm chi tiết hóa đơn dịch vụ");
            var frm = new FormChiTietHoaDonCapNhat();
            if (frm.ShowDialog()==DialogResult.OK)
            {
                XtraMessageBox.Show("Thêm thành công");
               LoadDb();
            }
        }

        private void btnThem_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            Them_Click();
        }

        private ChiTietHoaDonDichVu GetRowSelected()
        {
            try
            {
                int rowSelected = gridView1.GetSelectedRows()[0];
                return gridView1.GetRow(rowSelected) as ChiTietHoaDonDichVu;
            }
            catch (Exception)
            {
                return null;
            }
        }

        private void Xoa_Click()
        {
            logs.Info(Commons.ToString() + ", Chọn chức năng xóa chi tiết hóa đơn dịch vụ");

            var confirm = XtraMessageBox.Show("Bạn có chắc chắn xóa không", "Xác nhận", MessageBoxButtons.YesNo,
                MessageBoxIcon.Question);
            if (confirm == DialogResult.Yes)
            {
                foreach (var selectedRow in gridView1.GetSelectedRows())
                {
                    try
                    {
                        var rowDel = gridView1.GetRow(selectedRow) as ChiTietHoaDonDichVu;
                        if (rowDel != null)
                            _ctManager.Delete(rowDel);
                    }
                    catch (Exception ex)
                    {
                        logs.Info(ex);
                    }
                }
                LoadDb();
            }
        }

        private void Tim_Click()
        {
            logs.Info(Commons.ToString() + ", Chọn chức năng tìm chi tiết hóa đơn dịch vụ");
            var frm = new FormTimChiTietHoaDon();
            if (frm.ShowDialog() == DialogResult.OK)
            {
                XtraMessageBox.Show("Số kêt quả tìm thấy " + frm.Result.Count());
                gridChiTietHoaDon.DataSource = frm.Result.ToList();
            }
        }

        private void btnXoa_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            Xoa_Click();
        }

        private void LoadDb()
        {
            try
            {
                var acResult = new ChiTietHoaDonDVManager().GetAllOrdersDetail();
                if (acResult.Sucess())
                    gridChiTietHoaDon.DataSource = acResult.Result;
                else
                {
                    Logs(acResult);
                }
            }
            catch (Exception ex)
            {
                logs.Error(ex);
            }
        }

        private static void Logs(ActionResult listResult)
        {
            foreach (var ex in listResult.Exceptions)
            {
                logs.Error(ex.Message);
            }
        } 

        private void CapNhat_Click()
        {
            var chitiet = GetRowSelected();
            logs.Info(Commons.ToString() + ", Chọn chức năng cập nhật chi tiết hóa đơn dịch vụ");
            if (chitiet!=null)
            {
                var frm = new FormChiTietHoaDonCapNhat(chitiet) { btnThaoTac = { Text = "Cập nhật" } };
                if (frm.ShowDialog() == DialogResult.OK)
                {
                    XtraMessageBox.Show("Cập nhật thành công");
                    LoadDb();
                }
            }
            else
            {
                XtraMessageBox.Show("Chọn chi tiết dịch vụ cần cập nhật");
            }
        }

        private void ExportToFile()
        {
            var xtraReportChiTietHoa = new XtraReportChiTietHoaDon();
            logs.Info(Commons.ToString() + ", Chọn chức năng in chi tiết hóa đơn dịch vụ");
            try
            {
                var frmReport = new FormReport(xtraReportChiTietHoa);
                frmReport.ShowDialog();
            }
            catch (Exception)
            {
                XtraMessageBox.Show("Vui lòng đảm bảo tồn tại dữ liệu");
            }
        }

        private void barButtonItemTimKiem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            gridView1.OptionsFind.AlwaysVisible = !gridView1.OptionsFind.AlwaysVisible;
        }

        private void btnExport_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            ExportToFile();
        }

        private void TabChiTietHoaDonDV_Load(object sender, EventArgs e)
        {
            LoadDb();
        }

        private void barThem_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Them_Click();
        }

        private void barXoa_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            Xoa_Click();
        }

        private void barCapNhat_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            CapNhat_Click();
        }

        private void barRefresh_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            LoadDb();
        }

        private void mnThem_Click(object sender, EventArgs e)
        {
            Them_Click();
        }

        private void mnXoa_Click(object sender, EventArgs e)
        {
            Xoa_Click();
        }

        private void mnCapNhat_Click(object sender, EventArgs e)
        {
            CapNhat_Click();
        }

        private void mnTimKiem_Click(object sender, EventArgs e)
        {
            Tim_Click();
        }

        private void mnInDS_Click(object sender, EventArgs e)
        {
            ExportToFile();
        }

        private void btnCapNhat_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            CapNhat_Click();
        }

        private void btnTimKiem_LinkClicked(object sender, DevExpress.XtraNavBar.NavBarLinkEventArgs e)
        {
            Tim_Click();
        }

        private void gridView1_RowUpdated(object sender, DevExpress.XtraGrid.Views.Base.RowObjectEventArgs e)
        {
            logs.Info(Commons.ToString() + ", Cập nhật chi tiết hóa đơn");
            var ctHd = GetRowSelected();
            var rs = _ctManager.InsertOrUpdate(ctHd);
            if (rs.Sucess())
            {
                XtraMessageBox.Show(rs.Sucess() ? "Cập nhật thành công" : rs.GetErrorMessage());
            }
        }

    
    }
}
